home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / misc / gnuplot-3.7src.lha / gnuplot-3.7src / gnuplot-3.7.lha / gnuplot-3.7 / docs / doc2hlp.c < prev    next >
C/C++ Source or Header  |  1998-10-19  |  4KB  |  150 lines

  1. #ifndef lint
  2. static char *RCSid = "$Id: doc2hlp.c,v 1.15 1998/04/14 00:16:58 drd Exp $";
  3. #endif
  4.  
  5. /* GNUPLOT - doc2hlp.c */
  6.  
  7. /*[
  8.  * Copyright 1986 - 1993, 1998   Thomas Williams, Colin Kelley
  9.  *
  10.  * Permission to use, copy, and distribute this software and its
  11.  * documentation for any purpose with or without fee is hereby granted,
  12.  * provided that the above copyright notice appear in all copies and
  13.  * that both that copyright notice and this permission notice appear
  14.  * in supporting documentation.
  15.  *
  16.  * Permission to modify the software is granted, but not the right to
  17.  * distribute the complete modified source code.  Modifications are to
  18.  * be distributed as patches to the released version.  Permission to
  19.  * distribute binaries produced by compiling modified sources is granted,
  20.  * provided you
  21.  *   1. distribute the corresponding source modifications from the
  22.  *    released version in the form of a patch file along with the binaries,
  23.  *   2. add special version identification to distinguish your version
  24.  *    in addition to the base release version number,
  25.  *   3. provide your name and address as the primary contact for the
  26.  *    support of your modified version, and
  27.  *   4. retain our contact information in regard to use of the base
  28.  *    software.
  29.  * Permission to distribute the released version of the source code along
  30.  * with corresponding source modifications in the form of a patch file is
  31.  * granted with same provisions 2 through 4 for binary distributions.
  32.  *
  33.  * This software is provided "as is" without express or implied warranty
  34.  * to the extent permitted by applicable law.
  35. ]*/
  36.  
  37. /*
  38.  * doc2hlp.c  -- program to convert Gnuplot .DOC format to 
  39.  * VMS help (.HLP) format.
  40.  *
  41.  * This involves stripping all lines with a leading ?,
  42.  * @, #, or %.
  43.  * Modified by Russell Lang from hlp2ms.c by Thomas Williams 
  44.  *
  45.  * usage:  doc2hlp [file.doc [file.hlp]]
  46.  *
  47.  * Original version by David Kotz used the following one line script!
  48.  * sed '/^[?@#%]/d' file.doc > file.hlp
  49.  */
  50.  
  51. #ifdef HAVE_CONFIG_H
  52. #include "config.h"
  53. #endif
  54.  
  55. #include "ansichek.h"
  56. #include "stdfn.h"
  57. #include "doc2x.h"
  58.  
  59. extern boolean single_top_level;
  60.  
  61. void convert __PROTO((FILE *, FILE *));
  62. void process_line __PROTO((char *, FILE *));
  63.  
  64. int main(argc, argv)
  65. int argc;
  66. char **argv;
  67. {
  68.     FILE *infile;
  69.     FILE *outfile;
  70.  
  71.     infile = stdin;
  72.     outfile = stdout;
  73.  
  74.     single_top_level = TRUE;
  75.  
  76.     if (argc > 3) {
  77.     fprintf(stderr, "Usage: %s [infile [outfile]]\n", argv[0]);
  78.     exit(EXIT_FAILURE);
  79.     }
  80.     if (argc >= 2) {
  81.     if ((infile = fopen(argv[1], "r")) == (FILE *) NULL) {
  82.         fprintf(stderr, "%s: Can't open %s for reading\n",
  83.             argv[0], argv[1]);
  84.         exit(EXIT_FAILURE);
  85.     }
  86.     }
  87.     if (argc == 3) {
  88.     if ((outfile = fopen(argv[2], "w")) == (FILE *) NULL) {
  89.         fprintf(stderr, "%s: Can't open %s for writing\n",
  90.             argv[0], argv[2]);
  91.         exit(EXIT_FAILURE);
  92.     }
  93.     }
  94.  
  95.     convert(infile, outfile);
  96.  
  97.     exit(EXIT_SUCCESS);
  98. }
  99.  
  100.  
  101. void convert (inf, outf)
  102. FILE *inf, *outf;
  103. {
  104.     static char line[MAX_LINE_LEN+1];
  105.  
  106.     while (get_line(line, sizeof(line), inf))
  107.         process_line(line, outf);
  108. }
  109.  
  110.  
  111. void process_line(line, b)
  112. char *line;
  113. FILE *b;
  114. {
  115.     static int line_count = 0;
  116.  
  117.     line_count++;
  118.  
  119.     switch (line[0]) {        /* control character */
  120.     case '?':{            /* interactive help entry */
  121.         break;        /* ignore */
  122.     }
  123.     case '@':{            /* start/end table */
  124.         break;        /* ignore */
  125.     }
  126.     case '#':{            /* latex table entry */
  127.         break;        /* ignore */
  128.     }
  129.     case '%':{            /* troff table entry */
  130.         break;        /* ignore */
  131.     }
  132.     case '^':{            /* html entry */
  133.         break;        /* ignore */
  134.     }
  135.     case '\n':            /* empty text line */
  136.     case ' ':{            /* normal text line */
  137.         (void) fputs(line, b);
  138.         break;
  139.     }
  140.     default:{
  141.         if (isdigit((int)line[0])) { /* start of section */
  142.         (void) fputs(line, b);
  143.         } else
  144.         fprintf(stderr, "unknown control code '%c' in column 1, line %d\n",
  145.             line[0], line_count);
  146.         break;
  147.     }
  148.     }
  149. }
  150.